/*
 * 文件名称: content.js
 * 作者: lxj
 * 创建日期: 2024-12-19
 * 描述: Chrome插件内容脚本，负责在页面添加浮动图标并处理元素查找和内容插入
 * 版本: 1.0.0
 * 许可证: HHX
 */

// 创建浮动图标
function createFloatingIconFun() {
    // 检查是否已存在浮动图标
    if (document.getElementById('floating-icon-extension')) {
        return;
    }

    const floatingIcon = document.createElement('div');
    floatingIcon.id = 'floating-icon-extension';
    floatingIcon.innerHTML = '🔍';
    floatingIcon.className = 'floating-icon';





    // 添加点击事件
    floatingIcon.addEventListener('click', async function () {


        try {
            const results = [];
            var element = document.querySelector('.meun_active');
            // if (element) {
            //     console.log(element.textContent); // 或 element.value
            // }

            // 找到 for="entname" 的元素
            const label = document.querySelector('[for="entname"]');
            const corp_name = label.parentElement.querySelector('input').value.trim();
           
            

            try {
                const response = await fetch(`http://10.73.103.144:5000/api/results?dj_type=${element.textContent.trim()}&corp_name=${corp_name}`);

                if (!response.ok) {
                    throw new Error(`HTTP error! status: ${response.status}`);
                }
                const data = await response.json();
                console.log(data);
                // const data = {
                //     "added_time": "Thu, 07 Aug 2025 16:36:36 GMT",
                //     "bltime": "Thu, 07 Aug 2025 15:04:14 GMT",
                //     "corp_name": "武汉美艺森国际新材料有限公司",
                //     "dom": "湖北省武汉市硚口区长丰街道长丰乡长丰村16栋3层1室",
                //     "flow_name": "设立登记",
                //     "id": "62ff87ab5a07d206e79977362180ea13",
                //     "info": {
                //         "zhcx_gt_dz": [
                //             "武汉市硚口区古田二路长丰乡长丰村16栋5层3室-3",
                //             "湖北省武汉市硚口区长丰街道长丰乡长丰村16栋3层5号",
                //             "湖北省武汉市硚口区古田街道古田二路长丰乡长丰村16栋3层1室",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋1层5室",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋4层2室",
                //             "湖北省武汉市硚口区古田二路长丰乡长丰村16栋3层5号",
                //             "湖北省武汉市硚口区长丰乡长丰村16栋1层1室-2号",
                //             "湖北省武汉市硚口区古田二路长丰乡长丰村16栋5层2室",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋3层5号（3室）",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋5层1室-7",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋1层1室-1号"
                //         ],
                //         "zhcx_gt_ztzh": [
                //             "武汉顶极私橱商贸有限公司",
                //             "武汉科乐森建材家居有限公司",
                //             "湖北锦正工程有限公司",
                //             "武汉易尚文化传播有限公司",
                //             "武汉成峰流体设备有限公司",
                //             "武汉广峰投资咨询服务合伙企业（有限合伙）",
                //             "湖北曼德克环境科技有限公司",
                //             "武汉达成广告有限公司",
                //             "湖北丫丫城堡营销管理有限公司",
                //             "武汉市紫来项目管理有限公司"
                //         ],
                //         "zhcx_qy_dz": [
                //             "武汉市硚口区古田二路长丰乡长丰村16栋5层3室-3",
                //             "湖北省武汉市硚口区长丰街道长丰乡长丰村16栋3层5号",
                //             "湖北省武汉市硚口区古田街道古田二路长丰乡长丰村16栋3层1室",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋1层5室",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋4层2室",
                //             "湖北省武汉市硚口区长丰乡长丰村16栋1层1室-2号",
                //             "湖北省武汉市硚口区古田二路长丰乡长丰村16栋5层2室",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋3层5号（3室）",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋5层1室-7",
                //             "武汉市硚口区古田二路长丰乡长丰村16栋1层1室-1号"
                //         ],
                //         "zhcx_qy_ztzh": []
                //     }
                // }

                // 或者使用Object.keys()配合forEach
                // Object.keys(data).forEach(async key => {
                //     console.log(`属性 ${key}:`, data[key]);
                //     const result1 = null
                //     const result2 = null

                //     switch (key) {
                //         case 'corp_name':
                //             result1 = await findAndInsertElementFun('[for="entname"]', data[key]);
                //             results.push(result1);
                //             break;
                //         case 'info':
                //             const p1 = [...data[key]['zhcx_gt_dz'], ...data[key]['zhcx_qy_dz']]
                //             const p2 = [...data[key]['zhcx_gt_ztzh'], ...data[key]['zhcx_qy_ztzh']]
                //             // result1 = await findAndInsertElementFun('[for="qyszdtext"]', p1);
                //             result2 = await findAndInsertElementFun('[for="enttra"]', p2);
                //             //  results.push(result1);
                //             results.push(result2);

                //             break;
                //         case 'orgform':
                //             break;
                //         default:
                //             break;
                //     }

                //     // 执行三个查找和插入操作
                //     // const result1 = await findAndInsertElementFun('[for="entname"]', 'abc123');
                //     // const result2 = await findAndInsertElementFun('[for="enttra"]', '戴少武');
                //     // const result3 = await findAndInsertElementFun('[for="orgform"]', '有限公司');

                //     // results.push(result1);

                //     // 在这里处理每个属性
                // });

                const result1 = await findAndInsertElementFun('[for="entname"]', data['corp_name']); // 企业名称

                const p1 = [...data['info']['zhcx_gt_dz'], ...data['info']['zhcx_qy_dz']] // 企业地址
                const p1Text = p1.map((part, index) => `<span>${part}</span>`).join('<br>');

                const p2 = [...data['info']['zhcx_gt_ztzh'], ...data['info']['zhcx_qy_ztzh']] // 字号
                const p2Text = p2.map((part, index) => `<span>${part}</span>`).join('<br>');

                const result2 = await findAndInsertElementFun('[for="qyszdtext"]', p1Text);
                const result3 = await findAndInsertElementFun('[for="enttra"]', p2Text);
                
                results.push(result1);
                results.push(result2);
                results.push(result3);
                // 统计成功操作的数量
                setTimeout(() => {
                    console.log(results)

                    const successCount = results.filter(result => result === true).length;

                    if (successCount > 0) {
                        showNotificationFun(`成功处理${successCount}个目标元素`, 'success');
                    } else {
                        showNotificationFun('未找到任何目标元素', 'warning');
                    }
                }, 500);

            } catch (error) {
                console.error('网络请求失败:', error);
                showNotificationFun('数据获取失败，请检查网络连接或服务器状态', 'error');
                return; // 提前返回，避免继续执行后续操作
            }



        } catch (error) {
            console.error('执行查找和插入操作时发生错误:', error);
            showNotificationFun('操作执行失败，请重试', 'error');
        }
    });

    document.body.appendChild(floatingIcon);
}

/*
 * 文件名称: content.js
 * 作者: lxj
 * 创建日期: 2024-12-19
 * 描述: 异步查找包含指定选择器的元素并在父元素中插入或移除内容
 * 版本: 1.0.0
 * 许可证: HHX
 */
// 查找包含指定选择器的元素并在父元素中插入或移除内容
async function findAndInsertElementFun(selector, text) {
    return new Promise((resolve) => {
        // 使用setTimeout确保DOM操作在下一个事件循环中执行
        setTimeout(() => {
            // 查找所有包含指定选择器的元素
            const elements = document.querySelectorAll(selector);

            if (elements.length === 0) {
                console.log(`未找到包含${selector}的元素`);
                resolve(false);
                return;
            }

            // 检查当前选择器对应的元素是否已经插入过内容
            let hasInserted = false;
            elements.forEach(element => {
                const parentElement = element.parentElement;
                if (parentElement && parentElement.querySelector('.inserted-abc123')) {
                    hasInserted = true;
                }
            });

            if (hasInserted) {
                // 如果当前选择器对应的元素已插入，则移除对应的插入内容
                removeSpecificInsertedElementsFun(elements).then(() => {
                    resolve(true);
                });
            } else {
                // 如果不存在，则插入新元素
                insertElementsFun(elements, text).then(() => {
                    resolve(true);
                });
            }
        }, 0);
    });
}

/*
 * 文件名称: content.js
 * 作者: lxj
 * 创建日期: 2024-12-19
 * 描述: 异步插入元素功能，在指定元素的父元素中插入文本内容
 * 版本: 1.0.0
 * 许可证: HHX
 */
// 插入元素功能
async function insertElementsFun(elements, text) {
    return new Promise((resolve) => {
        setTimeout(() => {
            let insertCount = 0;
            elements.forEach(element => {
                const parentElement = element.parentElement;
                if (parentElement) {
                    // 检查父元素中是否已经包含插入的元素
                    const existingInserted = parentElement.querySelector('.inserted-abc123');
                    if (!existingInserted) {
                        const insertedText = document.createElement('span');

                        insertedText.innerHTML = text;

                        insertedText.className = 'inserted-abc123';
                        insertedText.style.color = '#ff6b6b';
                        insertedText.style.fontWeight = 'bold';
                        insertedText.style.marginLeft = '200px';
                        // insertedText.style.backgroundColor = '#fff3cd';
                        insertedText.style.padding = '2px 6px';
                        insertedText.style.borderRadius = '3px';
                        // insertedText.style.border = '1px solid #ffc107';
                        insertedText.style.display = 'inline-block';
                        insertedText.style.wordWrap = 'break-word';
                        insertedText.style.wordBreak = 'break-all';
                        insertedText.style.whiteSpace = 'normal';
                        insertedText.style.marginTop = '10px';
                        parentElement.appendChild(insertedText);
                        insertCount++;
                    }
                }
            });

            console.log(`插入了${insertCount}个元素的内容`);
            resolve(insertCount);
        }, 10);
    });
}

/*
 * 文件名称: content.js
 * 作者: lxj
 * 创建日期: 2024-12-19
 * 描述: 异步移除已插入的元素功能
 * 版本: 1.0.0
 * 许可证: HHX
 */
// 移除已插入的元素功能
async function removeInsertedElementsFun() {
    return new Promise((resolve) => {
        setTimeout(() => {
            const insertedElements = document.querySelectorAll('.inserted-abc123');
            let removeCount = 0;

            insertedElements.forEach(element => {
                if (element.parentNode) {
                    element.parentNode.removeChild(element);
                    removeCount++;
                }
            });

            console.log(`移除了${removeCount}个已插入的元素`);
            resolve(removeCount);
        }, 10);
    });
}

/*
 * 文件名称: content.js
 * 作者: lxj
 * 创建日期: 2024-12-19
 * 描述: 异步移除特定元素的已插入内容功能
 * 版本: 1.0.0
 * 许可证: HHX
 */
// 移除特定元素的已插入内容功能
async function removeSpecificInsertedElementsFun(targetElements) {
    return new Promise((resolve) => {
        setTimeout(() => {
            let removeCount = 0;

            targetElements.forEach(element => {
                const parentElement = element.parentElement;
                if (parentElement) {
                    const insertedElement = parentElement.querySelector('.inserted-abc123');
                    if (insertedElement) {
                        insertedElement.remove();
                        removeCount++;
                    }
                }
            });

            console.log(`移除了${removeCount}个特定元素的插入内容`);
            resolve(removeCount);
        }, 10);
    });
}

// 显示通知消息
function showNotificationFun(message, type = 'info') {
    const notification = document.createElement('div');
    notification.className = `notification notification-${type}`;
    notification.textContent = message;

    document.body.appendChild(notification);

    // 3秒后自动移除通知
    setTimeout(() => {
        if (notification.parentNode) {
            notification.parentNode.removeChild(notification);
        }
    }, 3000);
}

// 页面加载完成后创建浮动图标
if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', createFloatingIconFun);
} else {
    createFloatingIconFun();
}

// 监听页面动态变化，确保浮动图标始终存在
const observer = new MutationObserver(() => {
    if (!document.getElementById('floating-icon-extension')) {
        createFloatingIconFun();
    }
});

observer.observe(document.body, {
    childList: true,
    subtree: true
});